//class Solution {
//public:
//    int missingNumber(vector<int>& nums) {
//        int n = nums.size();
//        int ret = 0;
//        for (int i = 0; i <= n; i++) ret ^= i;
//        for (auto& e : nums) ret ^= e;
//        return ret;
//    }
//};

//class Solution {
//public:
//    int findMaxLength(vector<int>& nums) {
//        unordered_map<int, int> hash;
//        hash[0] = -1;
//        for (int i = 0; i < nums.size(); i++)
//        {
//            if (nums[i] == 0) nums[i] = -1;
//        }
//        int ret = 0, sum = 0;
//        for (int i = 0; i < nums.size(); i++)
//        {
//            sum += nums[i];
//            if (hash.count(sum)) ret = max(ret, i - hash[sum]);
//            else hash[sum] = i;
//        }
//        return ret;
//    }
//};